package com.woniu.smallmedical.mapper;

import com.woniu.smallmedical.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface CostMapper {
    /**
     * 查询缴费表总条数
     *
     * @param cost
     * @return int 查询总条数
     */
    public int selectCostCount(@Param("Cost") Cost cost,@Param("costTimeStart")String costTimeStart,
                               @Param("costTimeEnd")String costTimeEnd);

    /**
     * 带条件查询费用表
     *
     * @param cost
     * @param costTimeStart
     * @param costTimeEnd
     * @return
     */
    public List<Cost> selectAllCost(@Param("Cost") Cost cost,
                                    @Param("costTimeStart") String costTimeStart,
                                    @Param("costTimeEnd") String costTimeEnd,
                                    @Param("pageIndex") int pageIndex,
                                    @Param("pageSize") int pageSize);

    /**
     * 查询所有的缴费订单类型
     *
     * @return
     */
    public List<OrderType> selectAllOrderType();

    /**
     * 通过患者Id查询患者信息
     *
     * @param patienId
     * @return
     */
    public PatientInformation PatientInformationById(String patienId);

    /**
     * 通过医生Id查询医生信息
     *
     * @param userId
     * @return
     */
    public User selectUserById(int userId);

    /**
     * 通过科室Id查询
     *
     * @param did
     * @return
     */
    public Department selectDepById(int did);

    /**
     * 通过费用详情Id查询费用详情信息
     *
     * @param detailsId
     * @return
     */
    public CostDetails selectCoDetailsById(int detailsId);

    /**
     * 通过患者编号查询
     *
     * @param patientnumber
     * @return
     */
    public PatientInformation selectPatientByNumber(int patientnumber);

    /**
     * 通过处方Id查询出患者挂号的Id
     * @param prid
     * @return
     */
    public Prescription selectByPrescriptionId(Integer prid);

    /**
     * 通过患者挂号id查询挂号信息
     *
     * @param rid
     * @return
     */
    public Registration selectRegByPatId(int rid);

    /**
     * 根据接诊Id查询接诊类型
     *
     * @param receptiontypeid
     * @return
     */
    public Receptiontype selectReceptiontypeById(int receptiontypeid);

    /**
     * 根据患者挂号Id查询处方表Id
     *
     * @param rid
     * @return
     */
    public Prescription selectPrescriptionById(int rid);

    /**
     * 通过处方Id查询处方详情
     *
     * @param prid
     * @return
     */
    public List<PrescriptionDetails> selectprescriptionDetailsById(int prid);

    /**
     * 根据患者处方id修改缴费状态（已缴费）
     * @param prid
     */
    public void updatePayStateIdByPrid(int prid);

    /**
     * 根据患者处方id修改缴费类型
     * @param prid
     * @param orderTypeId
     */
    public void updateorderTypeId(@Param("prid") int prid,@Param("orderTypeId") int orderTypeId);

    /**
     * 根据库存Id修改药品库存数量
     * @param inid
     */
    public void updateInventoryCountById(@Param("inid") Integer inid,@Param("count") Integer count);

    /**
     * 根据处方id添加cost表的缴费时间
     * @param prid
     * @param costTime
     */
    public void updateCostTime(@Param("prid") Integer prid, @Param("costTime") Date costTime);


    /**
     * 添加缴费的总金额、单号、患者Id，处方Id
     *
     * @param cost
     */
    public void insertCost (@Param("Cost") Cost cost);

    /**
     * 查询所有处方id
     * @return
     */
    public List<Prescription> selectAllPrescription();


    public Cost selectCosts(Integer prid);

    public void updatePayMethod(@Param("payMethodId") Integer payMethodId,@Param("prid") Integer prid);

}
